// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

const TITLE = {
  submit: '', // 提交的标题
  show: '', // 查看的标题
  add: '', // 新增的标题
  edit: '', // 修改的标题
  del: '', // 删除的标题
  pass: '', // 通过的标题
  rej: '', // 拒绝的标题
}

// ============================== 导出 WEB 弹窗 ============================== //

export default {
  // —————————————————————————————— 模块路径 —————————————————————————————— //

  path: { type: String, default: '' }, // 示例： '' 或 'major' 或 'major/minor'

  // —————————————————————————————— 方法属性 —————————————————————————————— //

  // 表单校验通过后，会调用 onSubmit，如为空则根据弹窗类型使用默认的方法
  onSubmit: { type: Function, default: null }, // 提交方法 (优先级最高)

  // —————————————————————————————— 全屏属性 —————————————————————————————— //

  fullScreen: { type: Boolean, default: false }, // 是否为全屏弹窗

  // —————————————————————————————— 宽度属性 —————————————————————————————— //

  width: { type: [Number, String], default: null }, // 弹窗宽度
  fullWide: { type: Boolean, default: false }, // 是否为全屏宽度
  fullWidth: { type: String, default: '94vw' }, // 全屏宽度

  // —————————————————————————————— 高度属性 —————————————————————————————— //

  height: { type: [Number, String], default: null }, // 弹窗高度
  fullHigh: { type: Boolean, default: false }, // 是否为全屏高度

  // —————————————————————————————— 尺寸属性 —————————————————————————————— //

  ...CORE.WEB.BASE.SIZE,
  large: { type: Boolean, default: false }, // 是否为大号尺寸
  huge: { type: Boolean, default: false }, // 是否为巨大号尺寸

  // —————————————————————————————— 弹窗属性 —————————————————————————————— //

  top: { type: [Number, String], default: 60 }, // 距顶高度
  center: { type: Boolean, default: false }, // 是否为标题和底部居中
  modalClass: { type: String, default: '' }, // 弹窗样式类

  noFooter: { type: Boolean, default: false }, // 隐藏底部
  noCancel: { type: Boolean, default: false }, // 隐藏取消
  noEdit: { type: Boolean, default: false }, // 隐藏修改

  firstConfirm: { type: Boolean, default: false }, // 有 footer 插槽时，是否第一个为确定按钮 (取消按钮除外)
  lastConfirm: { type: Boolean, default: false }, // 有 footer 插槽时，是否最后一个为确定按钮

  confirm: { type: String, default: '' }, // 确定的文字
  cancel: { type: String, default: '' }, // 取消的文字
  close: { type: String, default: '' }, // 关闭的文字

  confirmBtn: { type: Object, default: () => ({ type: 'primary' }) }, // 确定的按钮配置 (见 BtnCommon)
  cancelBtn: { type: Object, default: () => ({}) }, // 取消的按钮配置
  closeBtn: { type: Object, default: () => ({}) }, // 关闭的按钮配置

  confirmType: { type: String, default: 'primary' }, // 确定的按钮类型
  cancelType: { type: String, default: 'info' }, // 取消的按钮类型
  closeType: { type: String, default: 'info' }, // 关闭的按钮类型

  // —————————————————————————————— 统一标题 (优先级最高) —————————————————————————————— //

  // 全部一样时可传 String 类型
  // 可用插槽 <template #title="{ title }">{{ title }}</template>
  title: { type: [String, Object], default: () => TITLE }, // 标题

  // —————————————————————————————— 独立标题 (优先级其次) —————————————————————————————— //

  submitTitle: { type: String, default: '' }, // 提交的标题
  showTitle: { type: String, default: '' }, // 查看的标题
  addTitle: { type: String, default: '' }, // 新增的标题
  editTitle: { type: String, default: '' }, // 修改的标题
  delTitle: { type: String, default: '' }, // 删除的标题
  passTitle: { type: String, default: '' }, // 通过的标题
  rejTitle: { type: String, default: '' }, // 拒绝的标题

  // —————————————————————————————— 拼接标题 (优先级最低) —————————————————————————————— //

  submit: { type: String, default: '' }, // 提交的动词
  show: { type: String, default: '' }, // 查看的动词
  add: { type: String, default: '' }, // 新增的动词
  edit: { type: String, default: '' }, // 修改的动词
  del: { type: String, default: '' }, // 删除的动词
  pass: { type: String, default: '' }, // 通过的动词
  rej: { type: String, default: '' }, // 拒绝的动词

  word: { type: String, default: '' }, // 拼接的词语

  // —————————————————————————————— 独立提示 (优先级最高) —————————————————————————————— //

  submitTip: { type: String, default: '' }, // 提交的提示
  delTip: { type: String, default: '' }, // 删除的提示
  passTip: { type: String, default: '' }, // 通过的提示
  rejTip: { type: String, default: '' }, // 拒绝的提示

  // —————————————————————————————— 拼接提示 (优先级最低) —————————————————————————————— //

  tipPrefix: { type: String, default: '' }, // 提示的前缀
  tipMiddle: { type: String, default: '' }, // 提示的中间
  tipSuffix: { type: String, default: '' }, // 提示的后缀

  // —————————————————————————————— 确认提示 —————————————————————————————— //

  tipConfirm: { type: String, default: '确定' }, // 提示的确定文字
  tipCancel: { type: String, default: '取消' }, // 提示的取消文字
  submitType: { type: String, default: 'warning' }, // 提交的类型
  delType: { type: String, default: 'error' }, // 删除的类型
  passType: { type: String, default: 'success' }, // 通过的类型
  rejType: { type: String, default: 'warning' }, // 拒绝的类型

  // —————————————————————————————— 原生属性 —————————————————————————————— //

  elProps: { type: Object, default: () => ({}) }, // el-modal 原生配置项
}
